package com.example.security.controller;

import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    /**
     * 这个接口我们希望用户能够只需要登录就可以了
     * @return
     */
//    @Secured("ROLE_ADMIN")
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }

//    @PreAuthorize("hasRole('admin') and hasRole ('dba')")
//    @GetMapping("/dba/abc")
//    public String dba2() {
//        return "hello dba";
//    }
//    @PreAuthorize("hasAnyRole ('admin', 'dba', 'user')")
//    @GetMapping("/user/abc2")
//    public String user2() {
//        return "user";
//    }

    /**
     * 登录的用户必须具有ADMIN角色才能访问该接口/admin/****
     * @return
     */
    @GetMapping("/admin/hello")
    public String admin() {
        return "hello admin";
    }

    /**
     * 登录的用户必须具有ADMIN角色才能访问该接口/admin/****
     * @return
     */
    @GetMapping("/admin/hello2")
    public String admin2() {
        return "hello admin";
    }
    /**
     * 等了的用户具有admin和user角色才可以访问/user/***
     * @return
     */
    @GetMapping("/user/hello")
    public String user() {
        return "hello user!";
    }

    /**
     * 备`ADMIN`和`DBA `的角色才能访问/db/**这个接口。
     * @return
     */
    @GetMapping("/db/hello")
    public String dba() {
        return "hello dba!";
    }
}